#ifndef DEEPSEEK_INTERFACE_H_
#define DEEPSEEK_INTERFACE_H_

#include <functional>
#include <string>
#include <vector>

#include "Communicator.h"

// 接口类
class Interface {
 public:
  /// 构造函数，初始化通信类
  /// @param api_url 设置api网址
  /// @param api_key 设置api key
  Interface(const std::string& api_url, const std::string& api_key);

  /// 设置上下文数量
  /// @param context_size
  void SetContextSize(size_t context_size);
  /// 设置最大Token数量
  /// @param max_tokens_size
  void SetMaxTokensSize(size_t max_tokens_size);
  /// 发送prompt 并接受 处理返回结果
  /// @param prompt
  /// @return true 为发送 接受成功
  bool SetPrompt(const std::string& prompt);  // TODO 目前是单线程
  /// 为返回值注册回调函数
  /// @param callback 返回值回调函数
  void RegisterCallback(const std::function<void(const std::string& data)>& callback);

 private:
  std::function<void(const std::string& data)> callback_;  // 回调函数
  Communicator communicator_;                              // 通信类实例
  std::vector<Message> message_history_;                   // 消息历史
  size_t context_size_ = 100;                              // 默认上下文数量
  size_t max_tokens_size_ = 3000;
};

#endif  // DEEPSEEK_INTERFACE_H_